1 Principes généraux
Le site StagOs vous permet de créer des projets sur lesquels vous pourrez le cas échéant travailler à plusieurs, y compris pendant leurs phases d’exploitation et de maintenance.
Nous vous créons automatiquement et dynamiquement le pipeline qui vous permettra de gérer de bout en bout votre intégration continue et votre déploiement continu.
Une intelligence artificielle scrute vos sources lors de vos commits et en déduit les composants à intégrer dans votre pipeline puis déclenche celui-ci jusqu’à l’étape que vous avez déterminée, et ce le cas échéant jusqu’à la mise en exploitation automatisée de votre application via des containers sécurisés et performants (Docker/Kubernetes ) exposés via AWS.
Le projet est abrité sous le Gitlab StageOS et nous vous proposons donc ici un petit mode d’emploi de celui-ci dans le contexte StageOs.
Tips : pour agrandir une image de ce site, cliquez dessus !
2 S’identifier sous StageOS
Il convient tout d’abord de faire un sign up, vous recevrez alors un mail de confirmation où il vous faudra cliquer pour revenir sur notre site.
A partir de là vous pourrez vous identifier et serez en mesure de créer vos projets.
(#fig:sign_in) écran d’identification
A tout moment vous pouvez réinitialiser votre mot de passe ou en retrouver un au travers du lien forgot your password? qui est diponible dans l’écra du sign in.
3 Gérer mes projets
Après vous être identifié, vous avez accès à vos projets. Notez que ce cycle sera plus rapide lors de vos prochains accès à StageOS qui vous remettra automatiquement dans votre contexte via différents mécanismes, dont le mécanisme SSL (nous verrons plus loin comment et ou déclarer votre clé RSA).
3.1 Créer un projet
Au départ, l’interface des projets est vide, et vous êtes incité à cliquer sur le + bleu pour créer un nouveau projet.
(#fig:my_project_empty) création de projets
Avant de créer un projet, vous pouvez créer un token, le copie et le conserver pour un usage futur. Nous verrons plus loin que cela vous permettra de cloner facilement d’autres dépots pour les insérer dans votre projet.
(#fig:my_token) création d’un token
Il faut maintenant accéder à l’interface de création de projet. Soyez très attentif à la façon dont vous allez renseigner le nom du projet et les commentaires car cela aidera vos collègues ou partenaires à mieux cerner l’objet de celui-ci.
Vous remarquerez que vous pouvez inviter d’autres personnes à participer au projet avec divers rôles. A ce stade vous êtes encore seul et votre rôle est mainteneur du projet, ce qui vous donne tous les droits sur celui-ci.
(#fig:create_project) création de projets - détail
Après un petit temps d’attente votre projet est créé. Pour ce faire nous avons configuré Gitlab avec vos crédentiels initiaux et créé les utilisateurs concernés que vous avez invité. Ces utilisateurs hériteront des droits attachés à leur rôles respectifs. Typiquement un développeur ne pourra pas administrer votre projet.
Nous avons créé un projet sous Gitlab, ce qui explique qu’il soit désigné par l’icône de ce produit.
(#fig:my_projects) mes projets
Vous pouvez alors aller consulter la syntèse de votre projet en cliquant sur son icône.
Vous voici dans l’interface principale de StageOS : en “régime de croisière”, il est possible que celle-ci soit l’unique interface que vous utilisiez au quotidien. Nous verrons plus loin que vous pourrez identifier les statut de tous les flux de travaux techniques générés par StageOS pour faire parcourir à votre projet ses différentes étapes de construction et de déploiement (du build au déploiement en passant par la qualité&test).
Les pipelines devops sont en effet automatiquement mis en oeuvre au travers de l’analyse des éléments de votre repository lors du commit. L’interface, vous permettra de vérifier l’avancement et l’état de leur exécution en quelques secondes.
Pour le moment, concentrons-nous sur la partie haute de l’interface.
(#fig:project_interface) Interface de gestion du projet
Notez qu’à tout moment vous pouvez décider de rendre ce projet publique à la communauté StageOS et/ou le rendre à nouveau privé via le switch public/private.
Vous constatez que votre projet est affublé d’un mini identifiant interne à StageOs, un nombre (ici 565 ), ne soyez pas étonné!
Vous n’avez pas encore de status sur vos Pipelines, puisque vous n’avez encore rien produit ou cloné dans votre repository Gitlab.
Vous pouvez maintenant cliquer vers l’url du Gitlab créé automatiquement pour vous, qui ressemble à cela :
https://xxxx.stageos.io/first-project-565/first-project.git
Attention : StageOS gère votre sécurité, il vous demande donc de vous signer sur le repository au travers de son propre mécanisme ( Bouton Stage OS).
(#fig:sign_with_stageos) crédentiels automatiques vers votre repository
Maintenant, laissez-vous faire et accédez à votre projet sous Gitlab.
Vous y êtes, force est de constater que c’est un peu vide et que personne ne vous a encore mis d’étoile ni forké, mais maintenant tout est possible !
(#fig:first_project) mes projets
Pour être parfaitement opérationnel et sécurisé il vous faut accepter au plus vite de créer un couple de clé RSA (publiques et privées) pour mettre en place le mécanisme SSL pour gérer les habilitations entre vos espces de travail, à savoir un ou plusieurs matériels, et le Gitlab. Notez que vous pouvez introduire plusieurs clés et les détruire.
Sous la ligne de commande de votre machine Linux/MAC/Windows (ou via Putty ou Kitty sous Windows, en utilisant les mêmes paramètres) vous pouvez saisir, en y mettant votre propre adresse email:
ssh-keygen -o -t rsa -b 4096 -C "mon_adresse_mail@site.extension"
Il vous faut alors donner un nom de fichier ( cela génèrera 2 fichiers), Attention identifiez bien le chemin des deux fichiers et conservez les bien à l’abris des regards !
Enter file in which to save the key (chemin ...) :
Il est conseillé d’accepter de donner une paraphrase, une chaine de caractère qui protège l’accès à vos clés.
Il vous suffira maintenant d’ouvir le fichier clé publique et de couper/coller la clé qui s’y trouve là où Gitlab vous le demande.
(#fig:ssh_coller) là où il faut coller sa clé publique
Voilà, après avoir cliqué sur Add key, vous avez fini la configuration minimale de votre projet et vous êtes opérationnel !
3.2 Détruire un projet
Soyez très prudent avec cette action irréversible.
Il est évident que la plupart des développeurs travaillent sur un environnement local et effectuent régulièrement un push de leur environnement vers l’espace commun, ici le projet que vous venez de créer : ce qui crée une forme de sauvegarde locale de vos informations. Pour autant, la destruction du projet vous fait perdre la traçabilité des mises à jours des différents acteurs et des informations disponibles dans le wiki du projet (entre autres).
Il est de toute façon de bonne pratique de cloner régulièrement votre projet afin de disposer de sauvegardes logiques de celui-ci ( via les mécanismes de Git qui sont documentés dans notre interface Gitlab).
Evidemment, pour sa part, StageOS a mis en place les mécanismes de sauvegarde indispensables pour préserver votre patrimoine applicatif.
Pour détruire un projet cliquer la croix ( x ) rouge. Vous disposez alors d’une dernière chance de retour arrière via le bouton Cancel.
(#fig:delete_project) destruction projet
4 Hello world !
4.1 Préparer une application pour votre Hello world
Pour construire et déployer une application avec StageOS … il ne vous faut qu’une chose : une application à construire et déployer !
Nous supposons ici que vous disposiez d’une telle application à déployer dans un langage et dans un contexte de dépendances techniques que nous supportons déjà (consultez la liste à jour en fin de tutoriel).
Typiquement cette application se caractérise de la façon suivante :
- elle fait quelque chose, par exemple elle expose sur le web une page Html où il est écrit “Hello world” ou elle expose une API RESTFUL qui renvoie “Hello world”. Elle peut évidemment être infiniment plus complexe et riche.
- Optionnellement :
- pour la construire vous avez utilisé un ou des gestionnaires de packages et de dépendances, et il existe quelquepart un ou plusieurs fichiers (.json, .yaml …) qui décrivent ces relations : nous en tiendrons compte.
- vos fichiers sont répartis dans une arborescence de votre choix qui comporte des sources, mais aussi des fichiers de configuration et des définitions de tests unitaires : nous scannerons cette arborescence.
- vous utilisez des outils pour gérer vos tests unitaires et/ou divers middlewares : nous traiterons automatiquement ces outils si nous les supportons déjà (consultez la liste à jour en fin de tutoriel).
- certaines dépendances ne font pas l’objet d’une déclaration externe, mais apparaissent dans le code (import d’un package …) : nous analyserons votre code pour construire l’application avec des versions cohérentes de ces dépendances.
- vous exigez que nous construisions l’application avec une dépendance donnée, une version d’interpréteur donnée … : nous vous fournissons un fichier de configuration (optionnel) pour vous permettre de stipuler cette contrainte et nous nous alignerons sur cette exigence spécifique. Nous utiliserons alors cette exigence spécifique pour redéfinir toutes les autres dépendances en fonction de celle-ci.
Nous avons construit un repository pour votre projet abrité dans notre infrastructre StageOs. Nous nous appuyons sur les commit que vous ferez sur ce repository pour déclencher nos processus d’analyse, d’intelligence artificielle, de construction, test et déploiement de votre application. Il vous est possible de l’alimenter de plusieurs manières :
- intervention directe dans le Gitlab mis à votre disposition : dépot manuel de vos sources et commit dans la branche master pour lancer nos processus automatiques.
- utilisation de votre Git Local et clone et push de votre repository Git local vers notre infrastructure en utilisant le token mis à votre disposition vu plus haut (vous pouvez le régéner à tout moment)
- utilisation d’un repository distant, Gitub ou Gitlab par exemple ( deux options s’offrent alors à vous : passer par votre repo local où clone et push direct en utilisant les mécanismes que nous mettons à votre disposition via le token).
Si l’on se place dans le deuxième cas (le plus courant) il vous suffit de :
générer un token (voir plus haut, un click dans notre interface) et de le conserver
identifier l’uri du Gitlab que nous vous avons créé pour votre projet et d’être loggé via StagOS
Pour initier la démarche, cloner ce repository vers votre git local, par exemple en utilisant votre CLI (Gitbash …) :
- positionnez-vous dans le folder cible (cd …)
- créez une variable d’environnement pour le token :
export STAGEOS_TOKEN = _coller_ici_votre_token_- cloner le repository StageOS :
git clone https://MyToken:$STAGEOS_TOKEN@uri_de_votre_gitlab_stageOS votre_nouveau_repo_local- ne pas paniquer s’il vous dit qu’il est vide, la première fois … c’est vrai !
Maintenant il vous suffit de copier votre aborescence projet avec vos fichiers source dans votre repo local :
- copier ce qui vous est utile dans le folder de votre repo
- verifier que votre .gitignore exclut les fichier inutiles
- mettez l’ensemble sous gestion de configuration par git :
git add -A- mettre à jour le repo à chaque fois que nécessaire:
git commit -am "un message pour ce souvenir quoi"- une fois que vous pensez disposer d’une application testable ou déployable, poussez la vers StageOs :
git push
Notre intelligence artificielle se lance alors et prend le relais.
Evidemment, dans le cas où vous travaillez directement sur noter Gillab en “manuel”, un commit de votre projet sur la branche master suffit pour déclencher notre IA.
Dans l’interface de votre projet sur StageOS, vous voyez alors le statut et l’historique de toutes vos actions et l’état des processus (pipeline) correspondant.
Votre projet est immédiatement pris en compte, suivant la charge de nos systèmes il peut rester en attente un très court moment :
Figure 4.1: En attente
Puis le projet est en cours de traitement :
Figure 4.2: En cours de traitement
Vous pouvez consulter l’état des pipelines qui mènent au tests ou au déploiement de votre application en live en cliquant sur Détail :
(#fig:detail_running) En cours de traitement
On distigue très facile un processus en échec d’un processus qui se passe bien :
(#fig:failed_vs_running) Un des processus a échoué
5 FAQ : Vos questions les plus fréquentes
5.1 Quelles compétences pour utiliser StageOS ?
StageOS s’adresse aux développeurs sachant créer une application qui fonctionnent sur leur poste de travail et qui désirent aller plus loin et n’ont soit pas la compétence pour le faire, soit pas le temps, soit pas les outils installés pour le faire dans de bonne conditions de performance et de fiabilité.
Ces développeurs doivent se confronter au problème de construction, test et de déploiement de leur application dans un contexte opérationnel et déployer des compétences que l’on désigne souvent sous le terme “Devops”.
StageOs ne nécessite pas d’avoir de compétences Devops, mais une connaissance surfacique de Git et des paradigmes de l’intégration et du déploiement continue d’application peut aider à exploiter l’outil au mieux. Pour autant, en première approximation la simple lecture du tutorial précédent démontre le peu de connaissance à mobiliser pour utiliser StageOS.
5.2 Quels prérequis techchiques pour utiliser StageOs ?
Pour utiliser StageOSIl faut :
- une machine de développement connectée qui puisse accéder au site.
- une application à tester ou déployer.
- de façon optionnelle : un dépôt Git sur sa machine ou sur un site déporté.
5.3 En quoi l’intelligence artifielle de StageOs est-elle utile ?
La variété des cas de figure et la constante évolution des “assets” informatiques en terme de dépendances logicielles, de “pipeline”, d’options de configuration, de savoir-faire de création de micro-services ou d’orchestration de “containers” impose la gestion et la combinaison de nombreuses règles. La trés grande combinatoire de l’interaction entre ces nombreuses régles et les nombreux évènements à gérer impose la mise en oeuvre de méthodes heuristiques d’une grande efficacité, très modulaire et performantes. C’est l’objet de l’IA non déterminisite que nous avons mis en place.
5.4 Langages et produits disponibles
Vous pouvez travailler dans les contextes suivants :
Python
- outils de test
- frameworks : Flask, Django
- packages de machine learning : Tensorflow
NodeJS
- Outils de test
- Gestionnaires de package
5.5 Kubernetes
Suis-je obligé d’avoir un Kubernetes à disposition ?
Non, mais vous pouvez en souscrire un pour déployer en production automatiquement.